package com.huilian.iotbox.admin.wap.dao;

import com.huilian.iotbox.data.dto.StatsStoreDto;
import com.huilian.iotbox.data.dto.StatsUserDto;
import com.huilian.iotbox.data.vo.StatsStoreVo;
import com.huilian.iotbox.data.vo.StatsUserVo;
import org.apache.ibatis.annotations.Mapper;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author lizhiquan
 * @CreateDate: 2021-04-12 10:56
 * @Description:
 */
@Mapper
public interface StatsStoreDao {
    List<StatsStoreVo> findStoreStatisticsList(StatsUserVo statsUserVo);

    /**
     * 根据统计id和统计类型（statsType）查一条数据
     *
     * @param statsStoreDto
     * @return
     */
    StatsStoreVo findStoreStatistics(StatsStoreDto statsStoreDto);

    /**
     * 主账号：统计某段时间内（o.gmtPayment）所有场地销售额
     * 子账号：统计某段时间内（o.gmtPayment）被分配场地销售额
     *
     * @param statsUserVo
     * @return
     */
    List<StatsStoreVo> findOrderStatisticsList(StatsUserVo statsUserVo);

    /**
     * 某段时间内（o.gmtPayment）某个场地的订单数据
     *
     * @param statsStoreDto
     * @return
     */
    StatsStoreVo findOrderStatistics(StatsStoreDto statsStoreDto);

    List<StatsStoreVo> findOrderStatisticsGroupByStore(StatsStoreDto statsStoreDto);


    List<StatsStoreVo> findByDateStore(StatsUserDto statsUserDto);

    BigDecimal findThisMonthTurnover(StatsUserDto statsUserDto);

    StatsStoreVo getStoreStatisticsByMchStoreId(StatsStoreDto s);

    List<StatsStoreVo> getStoreStatisticsAndApplet(StatsUserDto statsUserDto);

    StatsStoreVo findStatsStoreByMerchantStoreIdArray(StatsStoreDto statsStoreDto);

    StatsStoreVo getStoreStatisticsDeviceTypeName(StatsStoreDto statsStoreDto);

    List<StatsStoreVo> findStoreStats(StatsStoreDto statsStoreDto);


    StatsStoreVo findCustomerCount(StatsStoreDto statsStoreDto);

    StatsStoreVo findStoreStatsCustomer(StatsStoreDto statsStoreDto);

    StatsStoreVo findCommodityTypeByStoreIdTurnover(StatsStoreDto statsStoreDto);

    /**
     * 根据开始结束时间, 场地ID, 查询日或月的统计数据
     */
    List<StatsStoreVo> findStoreStatsStateList(StatsStoreDto statsStoreDto);

    StatsStoreVo findOrderStatisticsByStoreId(StatsStoreDto statsStoreDto);

    StatsStoreVo findActivityMoneyByStoreId(StatsStoreDto statsStoreDto);

    StatsStoreVo findStatsStoreByStoreId(StatsStoreDto statsStoreDto);


}
